package com.mdb.open.trade.feign.dto.cus;

import com.mdb.bc.api.data.DataObjectBase;
import com.mdb.enums.product.ProductCodeEnum;
import com.mdb.open.common.enums.trade.type.CreditTypeEnum;
import com.mdb.open.common.enums.trade.type.RoleTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author : yu.zunlong
 * @description : 客户信息保存实体
 * @date : 2019/10/29
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(description = "客户信息")
public class CustAllInfoDto extends DataObjectBase {
	private static final long serialVersionUID = -8230606332421644006L;

	/**
	 * 客户基础信息
	 */
	@ApiModelProperty("客户基础信息")
	CustBaseInfoDto baseInfo;

	/**
	 * 客户联系人信息
	 */
	@ApiModelProperty("客户联系人信息")
	List<CustContractDto> contracts;

	/**
	 * 客户附件信息
	 */
	@ApiModelProperty("客户附件信息")
	List<CustFileInfoDto> files;

	/**
	 * 客户财务报表
	 */
	@ApiModelProperty("客户财务报表")
	List<CustFinancialReportDto> financialReports;

	/**
	 * 登录用户id
	 */
	@ApiModelProperty("登录用户id")
	@NotBlank
	String userId;

	/**
	 * 登录用户名称
	 */
	@ApiModelProperty("登录用户名称")
	@NotBlank
	String userName;

	/**
	 * 产品
	 */
	@ApiModelProperty("产品")
    ProductCodeEnum product;

	/**
	 * 父级客户号
	 */
	@ApiModelProperty("父级客户号")
	String parentCode;

	/**
	 * 客户角色
	 */
	@ApiModelProperty("客户角色")
	RoleTypeEnum role;

	/**
	 * 客户号
	 */
	@ApiModelProperty("客户号")
	String customerCode;

	/**
	 * 客户名称
	 */
	@ApiModelProperty("客户名称")
	String customerName;

	/**
	 * 证件类型
	 */
	@ApiModelProperty("客户证件类型")
	@NotNull
	CreditTypeEnum creditType;

	/**
	 * 证件号码
	 */
	@ApiModelProperty("客户证件号码")
	@NotBlank
	String creditCode;
}
